/*
- * Copyright (C) 2005 Mr Jamie McCracken
+ * Copyright (C) 2005 Jamie McCracken <jamiemcc@gnome.org>
+ * Copyright (C) 2009-2010 Nokia <ivan.frade@nokia.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
*
- * Author: Jamie McCracken <jamiemcc@gnome.org>
+ * Authors: Jamie McCracken <jamiemcc@gnome.org>
+ * Jürg Billeter <juerg.billeter@codethink.co.uk>
+ * Martyn Russell <martyn@lanedo.com>
*
* Based on nautilus-search-engine-tracker.c
*/
/* Tracker 0.6 API */
-typedef void (*TrackerArrayReply) (char **result, GError *error, gpointer user_data);
-
-static TrackerClient * (*tracker_connect) (gboolean enable_warnings, gint timeout) = NULL;
-static void (*tracker_disconnect) (TrackerClient *client) = NULL;
-static int (*tracker_get_version) (TrackerClient *client, GError **error) = NULL;
-static void (*tracker_cancel_last_call) (TrackerClient *client) = NULL;
-
-static void (*tracker_search_metadata_by_text_async) (TrackerClient *client,
- const char *query,
- TrackerArrayReply callback,
- gpointer user_data) = NULL;
-static void (*tracker_search_metadata_by_text_and_location_async) (TrackerClient *client,
- const char *query,
- const char *location,
- TrackerArrayReply callback,
- gpointer user_data) = NULL;
+typedef void (*TrackerArrayReply) (char **result,
+ GError *error,
+ gpointer user_data);
+
+static TrackerClient *
+ (*tracker_connect) (gboolean enable_warnings,
+ gint timeout) = NULL;
+static void (*tracker_disconnect) (TrackerClient *client) = NULL;
+static int (*tracker_get_version) (TrackerClient *client,
+ GError **error) = NULL;
+static void (*tracker_cancel_last_call) (TrackerClient *client) = NULL;
+
+static void (*tracker_search_metadata_by_text_async) (TrackerClient *client,
+ const char *query,
+ TrackerArrayReply callback,
+ gpointer user_data) = NULL;
+static void (*tracker_search_metadata_by_text_and_location_async) (TrackerClient *client,
+ const char *query,
+ const char *location,
+ TrackerArrayReply callback,
+ gpointer user_data) = NULL;
+
+
/* Tracker 0.7->0.9 API */
typedef enum {
TRACKER_CLIENT_ENABLE_WARNINGS = 1 << 0
GError *error,
gpointer user_data);
-static TrackerClient * (*tracker_client_new) (TrackerClientFlags flags,
- gint timeout) = NULL;
-static gchar * (*tracker_sparql_escape) (const gchar *str) = NULL;
-static guint (*tracker_resources_sparql_query_async) (TrackerClient *client,
- const gchar *query,
- TrackerReplyGPtrArray callback,
- gpointer user_data) = NULL;
+static TrackerClient * (*tracker_client_new) (TrackerClientFlags flags,
+ gint timeout) = NULL;
+static gchar * (*tracker_sparql_escape) (const gchar *str) = NULL;
+static guint (*tracker_resources_sparql_query_async) (TrackerClient *client,
+ const gchar *query,
+ TrackerReplyGPtrArray callback,
+ gpointer user_data) = NULL;
static struct TrackerDlMapping
gint i;
GModule *tracker;
GModuleFlags flags;
-
+
done = TRUE;
flags = G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL;
if ((tracker_dl_mapping[i].versions & version) == 0)
continue;
- if (!g_module_symbol (tracker,
+ if (!g_module_symbol (tracker,
tracker_dl_mapping[i].fn_name,
tracker_dl_mapping[i].fn_ptr_ref))
{
return version;
}
-struct _GtkSearchEngineTrackerPrivate
+struct _GtkSearchEngineTrackerPrivate
{
- GtkQuery *query;
+ GtkQuery *query;
TrackerClient *client;
- gboolean query_pending;
+ gboolean query_pending;
TrackerVersion version;
};
finalize (GObject *object)
{
GtkSearchEngineTracker *tracker;
-
+
tracker = GTK_SEARCH_ENGINE_TRACKER (object);
-
- if (tracker->priv->query)
+
+ if (tracker->priv->query)
{
g_object_unref (tracker->priv->query);
tracker->priv->query = NULL;
static void
search_callback (gpointer results,
- GError *error,
+ GError *error,
gpointer user_data)
{
GtkSearchEngineTracker *tracker;
GPtrArray *OUT_result;
gchar *uri;
gint i;
-
+
tracker = GTK_SEARCH_ENGINE_TRACKER (user_data);
hit_uris = NULL;
-
+
tracker->priv->query_pending = FALSE;
- if (error)
+ if (error)
{
_gtk_search_engine_error (GTK_SEARCH_ENGINE (tracker), error->message);
g_error_free (error);
if (tracker->priv->query == NULL)
return;
-
+
search_text = _gtk_query_get_text (tracker->priv->query);
location_uri = _gtk_query_get_location (tracker->priv->query);
tracker);
g_string_free (sparql, TRUE);
}
- else
+ else
{
if (location)
{
gtk_search_engine_tracker_stop (GtkSearchEngine *engine)
{
GtkSearchEngineTracker *tracker;
-
+
tracker = GTK_SEARCH_ENGINE_TRACKER (engine);
-
- if (tracker->priv->query && tracker->priv->query_pending)
+
+ if (tracker->priv->query && tracker->priv->query_pending)
{
tracker_cancel_last_call (tracker->priv->client);
tracker->priv->query_pending = FALSE;
}
static void
-gtk_search_engine_tracker_set_query (GtkSearchEngine *engine,
+gtk_search_engine_tracker_set_query (GtkSearchEngine *engine,
GtkQuery *query)
{
GtkSearchEngineTracker *tracker;
-
+
tracker = GTK_SEARCH_ENGINE_TRACKER (engine);
-
- if (query)
+
+ if (query)
g_object_ref (query);
if (tracker->priv->query)
{
GObjectClass *gobject_class;
GtkSearchEngineClass *engine_class;
-
+
gobject_class = G_OBJECT_CLASS (class);
gobject_class->finalize = finalize;
-
+
engine_class = GTK_SEARCH_ENGINE_CLASS (class);
engine_class->set_query = gtk_search_engine_tracker_set_query;
engine_class->start = gtk_search_engine_tracker_start;
engine->priv->client = tracker_client;
engine->priv->query_pending = FALSE;
engine->priv->version = version;
-
+
return GTK_SEARCH_ENGINE (engine);
}